iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 5
0
IoT

玩玩 BLE系列 第 5

[Day 05] 藍牙廣播(Advertising) (2/2)

  • 分享至 

  • xImage
  •  

廣播(Advertising)

廣播封包(Advertising Packets)

在未進行連線之前,有兩種封包會在空氣中傳遞,廣播(Advertising Data)以及掃描回應(Scan Response),
這兩種封包一般來說最長都可以到31 Bytes,在藍牙 5之後最長可以到254 Bytes 。

廣播封包的類型共有八種,如下表,
其中ADV_開頭的是在主要的廣播頻道(#37~#39)中發送,
另外AUX_開頭的則是在次要的廣播頻道(資料傳輸頻道, #0~#36)中發送。

Advertising PDU Description Max adv data len Allow scan req Allow connect
ADV_IND 代表可被連線且可回應掃描的封包;這是最常用的廣播封包,沒有指定廣播的對象。 31 bytes Yes Yes
ADV_DIRECT_IND 代表可被連線但不回應掃描的封包;專門用於點對點的廣播,已經有指定連線的對象。 N/A No Yes
ADV_SCAN_IND 代表不可連線且但可回應掃描的封包 31 bytes Yes No
ADV_NONCONN_IND 代表不可連線且不回應掃描的封包 31 bytes No No
ADV_EXT_IND 用來表示有廣播封包在次要頻道中被發送 No adv data allowed. No No
AUX_ADV_IND 用來發送可被連線且可回應掃描的封包, 且在次要廣播頻道中發送 254 bytes Yes Yes
AUX_SYNC_IND 用來發送週期性的廣播封包, 且在次要廣播頻道中發送 254 bytes No No
AUX_CHAIN_IND 用來串接多個廣播封包, 且在次要廣播頻道中發送 254 bytes N/A N/A

前四個都是藍牙 5 之前就存在的廣播類型,
其中ADV_DIRECT_IND 沒有31 bytes 的廣播資料,只有6 Bytes 的指定對象的裝置位址,
除了這個之外的另外三種廣播封包(ADV_IND、ADV_SCAN_IND、ADV_NONCONN_IND),都可以攜帶31 Bytes 的資料。
後面四個則是藍牙 5 之後才新增的,我們試著用例子來理解這四個新的類型,
當我們想要發送資料量較大的封包時,
先透過 ADV_EXT_IND 這個封包來告訴對方"在次要廣播頻道中,將有廣播資料被發送",
接著對方就可以在該頻道中接收到資料量較大的廣播封包。
如果要廣播的資料超過一個封包的長度限制(254 Bytes),
就會在第一個帶有資料的廣播封包中告訴對方下一個封包的廣播頻道。
我比較憨慢講話,大家可以試著參考下圖來理解
Advert Extensions

參考文章:


上一篇
[Day 04] 藍牙廣播(Advertising) (1/2)
下一篇
[Day 06] 藍牙掃描(Scanning)
系列文
玩玩 BLE27
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言